package com.weilx959.spt.core.utils;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;

import java.util.List;
import java.util.Map;
import java.util.Objects;

public class Assert {
    private Assert() {}

    public static void check(boolean success, String msg) {
        if (!success) {
            throw new IllegalArgumentException(msg);
        }
    }

    public static void notBlank(String s, String msg) {
        if (StringUtils.isBlank(s))
            throw new IllegalArgumentException(msg);
    }

    public static void notEmpty(String s, String msg) {
        if (StringUtils.isEmpty(s))
            throw new IllegalArgumentException(msg);
    }

    public static <T> void notEmpty(List<T> l, String msg) {
        if (CollectionUtils.isEmpty(l))
            throw new IllegalArgumentException(msg);
    }

    public static <T, P> void notEmpty(Map<T, P> m, String msg) {
        if (MapUtils.isEmpty(m))
            throw new IllegalArgumentException(msg);
    }

    public static <T> void notEmpty(T[] a, String msg) {
        if (ArrayUtils.isEmpty(a))
            throw new IllegalArgumentException(msg);
    }

    public static <T> void notNull(T t, String msg) {
        if (Objects.isNull(t))
            throw new IllegalArgumentException(msg);
    }

    public static void error(String msg) {
        throw new IllegalArgumentException(msg);
    }

    public static void error(String msg, Exception e) {
        throw new IllegalArgumentException(msg, e);
    }

    public static void isNull(Object obj, String msg) {
        if (Objects.nonNull(obj)) {
            throw new IllegalArgumentException(msg);
        }
    }
}
